/**
 * 
 */
package cn.nawang.ebeim.api.service;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import cn.nawang.ebeim.api.domain.User;
import cn.nawang.ebeim.api.vo.UserView;

/**
 * @ClassName: UserService
 * @Description: 用户业务逻辑接触
 * @author 张建峰
 * @date 2015年8月6日 上午10:19:36
 * @version v1.0
 */
public interface UserService {
  /**
   * @author 张建峰
   * @Description: 根据id查询信息
   * @param @param id
   * @param @return
   * @return User
   * @date 2015年8月6日上午10:19:49
   *
   * @修改人 张建峰
   * @修改日期
   */
  public User findOne(String id);

  /**
   * @author 许炜毅
   * @Description 修改用户信息
   * @param user
   * @return boolean
   * @date 2015年8月10日上午11:42:47
   *
   * @修改人
   * @修改日期
   */
  public boolean update(User user);

  /**
   * @author 许炜毅
   * @Description 客户下新增用户
   * @param user
   * @return boolean
   * @date 2015年8月7日下午3:46:13
   *
   * @修改人
   * @修改日期
   */
  public boolean save(User user);

  /**
   * @author 许炜毅
   * @Description 根据手机号查找用户
   * @param mobile
   * @return User
   * @date 2015年8月7日下午2:40:01
   *
   * @修改人
   * @修改日期
   */
  public User findUserByMobile(String mobile);

  public User findUserByMobileNotId(String mobile, String id);

  /**
   * @author 许炜毅
   * @Description 根据电子邮箱查找用户
   * @param email
   * @return User
   * @date 2015年8月7日下午2:40:38
   *
   * @修改人
   * @修改日期
   */
  public User findUserByEmail(String email);

  public User findUserByEmailNotId(String email, String id);

  /**
   * @author 许炜毅
   * @Description 根据用户名查找用户
   * @param username
   * @return User
   * @date 2015年8月7日下午2:41:00
   *
   * @修改人
   * @修改日期
   */
  public User findUserByUsername(String username);

  public User findUserByUsernameNotId(String username, String id);

  /**
   * @author 许炜毅
   * @Description 验证用户名、手机号、电了邮箱是否存在
   * @param username
   * @param mobile
   * @param email
   * @return User
   * @date 2015年8月7日下午3:55:48
   *
   * @修改人
   * @修改日期
   */
  public User findUserByUsernameOrMobileOrEmail(String username, String mobile, String email);

  public User findUserByUsernameOrMobileOrEmailNotId(String username, String mobile, String email,
      String id);

  /**
   * @author 许炜毅
   * @Description 获取用户基本信息
   * @param userId
   * @return UserView
   * @date 2015年8月10日上午11:19:45
   *
   * @修改人
   * @修改日期
   */
  public UserView findUserById(String userId);

  public Map<String, Object> intoUpdateUser(String userId);

  /**
   * 
   * @author fanyb
   * @Description: 用户登录处理
   * @param username 用户名
   * @param password 密码
   * @param request
   * @return Map 用户登录信息
   * @date Aug 12, 20159:20:54 AM
   *
   * @修改人
   * @修改日期
   */
  public Map<String, Object> findUserByUsernameAndPwd(String username, String password,
      HttpServletRequest request);
  
  /**
   * 
   * @author fanyb
   * @Description: 查找某个企业的管理员用户
   * @param customerId
   * @return User 
   * @date Oct 22, 20154:18:14 PM
   *
   * @修改人 
   * @修改日期
   */
  public User findByCustomerIdAndAdmin(String customerId);
  
  /**
   * 
   * @author fanyb
   * @Description: 查找某用户总共有多少空间，以及还有多少可分配空间
   * @param customerId
   * @return Map<String,Object> 
   * @date Oct 22, 20155:17:03 PM
   *
   * @修改人 
   * @修改日期
   */
  public Map<String,Object> findUserAvailableSpace(String customerId);
  
  /**
   * 
   * @author fanyb
   * @Description: 给某个用户追加空间
   * @param id
   * @param addSpaceSize
   * @return Map<String,Object> 
   * @date Oct 23, 20155:47:28 PM
   *
   * @修改人 
   * @修改日期
   */
  public void addSpaceSize(String id,String addSpaceSize);
}
